﻿/* 
 * Author: aple
 * Created on 2015年9月3日, 上午9:59
 */

#ifndef __PROG_SET_H
#define	__PROG_SET_H

#include "stdint.h"

#ifdef	__cplusplus
extern "C" {
#endif

/*--------------------------------------------------------------
* 段执行规则：
* 每段的首位必须为时间值，一个有符号16bits数
* 时间大于0的段为有效段
* 时间等于0的段跳过
* 时间小于0的段结束
* 有效段数为0时，固定在第一段运行
* 启动前首段可以用 “SEG_MAX” 的下一段获取
*---------------------------------------------------------------*/

typedef struct {
    void * tab;			// 程序表，每段首位必须为时间
	uint8_t seg_size;	// 段尺寸，字节数
	int8_t seg_min;		// 最小段位置
	int8_t seg_max;		// 最大段位置
	int8_t tm_end;      // 结束段时间 0 / -1
} prog_seg_type;

// 有效段最大时段位置
int8_t prog_seg_max(const prog_seg_type *tab);

// 有效段最小时段位置
int8_t prog_seg_min(const prog_seg_type *tab);

// 有效段数
int8_t prog_seg_effective(const prog_seg_type *tab);

// 获取指定段的下一段
int8_t prog_seg_next(const prog_seg_type *tab, int8_t seg_now);

// 获取指定段的上一段
int8_t prog_seg_fore(const prog_seg_type *tab, int8_t seg_now);

#ifdef	__cplusplus
}
#endif

#endif	/* __PROG_SET_H */

